Experimentation
Goal of this document
- List all the different experiments we did in order to choose the technologies
- Describe what we have learned
Experiments
The idea of the experiments was to create a simple front-end oriented web application that could mimic the functionality of a simple chat. Sending messages, having different chat rooms, logging... It is important to mention that we did not implement ant back-end functionality, but we left a "gap" for it in the future to be completed. For instance, an empty angular service that just returns a hard-coded array of JSON objects with the messages.
We used three different metrics to test its value as a potential technology:
- Simplicity: how many lines of codes were needed to develop the app, and the readability of that code.
- Modularity capabilities: we have divided our team in front-end and back-end developers, so if the technology allows us to divide easily the different layers of the architecture, that would be a huge advantage.
- Learning curve: since the dev team has little to no experience with developing this kind of projects we had to balance the time needed to learn the basics and the time it saves by simplifying developing.
Plugin | Description | Simplicity | Modularity | Learning curve |
---|---|---|---|---|
HTML & Javascript | Just a very simple barebone web app | The code becomes very messy (1) | Low (2) | Zero |
jQuery | Wildly used Javascript library that simplifies DOM interaction | The simplest | Low | Low |
AngularJS | Node.js Framework for developing SPAs (Single Page Applications) | Intermediate (3) | Total (MVC) | High |
Footnotes
- Specially since the DOM access and modification needs to be programmed just using basic Javascript calls.
- Since there is no inherent architecture to just plain Javascript and HTML, besides separating the "View" in the HTML and the "Controller" in the Javascript code.
- I mean this because while the code becomes cleaner in terms of DOM access, managing the framework can be daunting at first. Of course, this is written from the perspective of someone that is new to AngularJS.
Results & thoughts
At the end, we have decided to use AngularJS. Although angular has a steep learning curve it is a very powerful framework. Besides, we have found way more documentation for AngularJS with SOLID than with any other technology.
(Note)
Sadly, we did not commit all the experiments to this repository. However, the first 5 commits or so were the AngularJS experiment, to anyone interested.